import axios from 'axios'
import router from '@/router'
import store from '@/store/index.js'

import {
    ElMessage,
    ElMessageBox
} from 'element-plus'

// 引入二次封装的 ElLoading
import {
    showLoading,
    hideLoading
} from '@/utils/loading'

const server = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,  //根据不同环境应用不同接口
    //  baseURL:"https://lianghj.top:8888/api/private/v1/", //线上接口
    timeout: 1000
})


// 前置拦截
server.interceptors.request.use(config => {
    if (store.getters.token) {
        config.headers.Authorization = `Bearer ${store.getters.token}`
    }
    // 开启 loading 效果
    showLoading()
    // 断网提示
    if (!navigator.onLine) {
        ElMessageBox.alert(
            '亲,好像出现了网络错误...',
            '温馨提示', {
            confirmButtonText: '好的',
            type: 'warning'
        }
        )
    }

    return config

}, error => {
    return Promise.reject(error)
})



// 后置拦截
server.interceptors.response.use(res => {
    // console.log('响应成功',res);

    // 响应拦截进来隐藏loading效果,此处采用延时处理是合并
    // loading 请求效果,避免多次请求loading关闭又开启
    setTimeout(() => {
        hideLoading()
    }, 200)

    return res.data
},
    error => {
        // console.log('响应错误',error);
        // const {
        //     response
        // } = error;
        // // 反馈异常状态
        // errorHandler(response.status, response.data);
        // setTimeout(() => {
        //     hideLoading()
        // }, 200)
        // return Promise.reject(error)
        
    })

export default server;
